package com.ruan.pojo;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 任务
 */
@Data
public class Tasks implements Serializable {
//static：这个关键字表示这个变量是类级别的，而不是实例级别的。也就是说，无论创建了多少个类的实例，这个变量只有一份。
    private static final long serialVersionUID = 1L;
//final：这个关键字表示这个变量是一个常量，一旦被赋值就不能再改变。
//long：这个关键字表示这个变量的数据类型是long，即64位的整数。
//serialVersionUID：这是一个用于序列化的版本号，它用于确保序列化和反序列化的兼容性。
// 当对类进行序列化时，会将这个版本号写入序列化数据中，反序列化时会用它来验证是否和当前类的版本匹配。
//这个版本号在对类进行序列化和反序列化时起着重要的作用，确保不同版本的类能够正确地进行序列化和反序列化操作。
    private Long id;
    // 所属项目
    private Long projectId;
    //任务负责人id
    private Long employeeId;
    //任务名称
    private String taskName;
    //任务具体内容
    private String description;
    // 最迟完成时间,每个字段一个固定值//截止时间(最迟完成时间)由项目负责人决定
    // @TableField(fill = FieldFill.INSERT)//插入时填充字段//ctrl+点击FieldFill，看到DEFAULT是默认不处理
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime deadline;//新增，执行insert语句时来维护这个字段的值
    //可以使用枚举类型来表示数据库中的 ENUM 类型。
    // 对于 completion_status ENUM('onGoing', 'completed')，
    // 您可以按照以下方式在 Java 实体类中进行定义
    private CompletionStatus completionStatus;
    public enum CompletionStatus {
        incomplete,
        completed
        //INCOMPLETE,
        //COMPLETED
    }
    // 项目分配时间 -- 项目开始时间
    @TableField(fill = FieldFill.INSERT)//插入时填充字段//ctrl+点击FieldFill，看到DEFAULT是默认不处理
    private LocalDateTime createTime;//新增，执行insert语句时来维护这个字段的值

    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和更新时填充字段
    private LocalDateTime updateTime;//插入和更新的时候，都需要重新设置这个字段的值

//    @TableField(fill = FieldFill.INSERT)//插入时填充字段
//    private Long createUser;
//
//    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和更新时填充字段
//    private Long updateUser;

}
